package iso2.struts2;

import iso2.dominio.ArticuloInvalidoException;
import iso2.dominio.Carrito;
import iso2.dominio.Pedido;
import iso2.dominio.StockInsuficienteException;
import iso2.dominio.UsuarioNoLogeadoException;
import iso2.persistencia.ConexionesOcupadasException;

import java.sql.SQLException;

import paypal.domain.Pago;
import paypal.excepciones.ImporteInvalidoException;
import paypal.excepciones.NoHayConexionesLibresException;
import paypal.excepciones.UsuarioIncorrectoException;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial") 
public class PagarConPayPal extends ActionSupport {
	private String correoUsuario;
	private String pwd;
	
	public String execute() {
		
		Carrito carrito;
		Pedido pedido;
		
		try {
			carrito = 
				(Carrito)ActionContext.getContext().getSession().get("carrito");
			
			// Realizar el pedido
			pedido = carrito.doPedido();
			
			// Realizar el pago
			Pago.getPago().pagar(correoUsuario, pwd, carrito.getImporte(), "");
			
			// Confirmar el pago del pedido
			pedido.setEstado("pagado");
			pedido.updateEstadoPedido();
			
			return SUCCESS;
		} catch (NoHayConexionesLibresException e) {
			return "NoHayConexionesLibresException";
		} catch (ImporteInvalidoException e) {
			return "ImporteInvalidoException";
		} catch (UsuarioIncorrectoException e) {
			return "UsuarioIncorrectoException";
		} catch (SQLException e) {
			return "SQLException";
		} catch (ConexionesOcupadasException e) {
			return "ConexionesOcupadasException";
		} catch (ArticuloInvalidoException e) {
			return "ArticuloInvalidoException";
		} catch (StockInsuficienteException e) {
			return "StockInsuficienteException";
		} catch (UsuarioNoLogeadoException e) {
			return "UsuarioNoLogeadoException";
		}
	}

	public void setCorreoUsuario(String correoUsuario) {
		this.correoUsuario = correoUsuario;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

}
